Advancements in the field of communication network have increased the consumption of various data services such as voice over IP (VoIP), video streaming, and so forth. Such data services not only need good quality of service (QoS) to guarantee clarity but also effectiveness of the data transmission. For example, even if the highest QoS is set, there may be no control on the latency of the network due to essential network processing associated with data transmission such as packet fragmentation or packet dropping.
It is generally accepted that for efficient data transfer, the data packet size should be as large as possible. The larger the packets, the lesser the overhead associated with transferring the entire data. However, if a packet is larger than that which any intermediate node (e.g., a router) can process, the packet will be fragmented at that node. Packet fragmentation is performed to ensure that packets are passed on to the next node. As will be appreciated by those skilled in the art, the maximum size packet that a router can process without fragmenting the packet is called an MTU (maximum transmission unit). The maximum size packet that can be transferred from a source node to a destination node without fragmentation is called PMTU (path maximum transmission unit). Thus, the PMTU is a function of the maximum size packets that all intermediate nodes in a network path can process without fragmenting the packets. However, the PMTU is dynamic in nature and may vary over time. If the PMTU decreases during data transmission, the packets may still have to be fragmented. Packet fragmentation brings an additional processing and storage overhead for splitting of packet, storing of fragmented packets, and reassembly of fragmented packets, thereby degrading performance. For example, when a packet is fragmented or split into multiple parts, each part should contain enough information to allow for reassembly at the destination node. Further, if a fragment from a packet is lost or dropped then the entire packet has to be discarded and retransmitted. Further, in case the packets are lost or dropped by a node they are required to send reverse packet to the host indicating the reason for the drop. Lastly, some firewalls may not allow the fragments to be passed as the non-initial packets would be blocked if the packets do not arrive in order. In such scenarios, the host may not get any indication that the packets have been lost or dropped, thereby resulting in permanent loss of that packet during transmission.
In a traditional approach, when a packet needs to be sent on the network, the supported interface on the source node dictates the size of the packet being sent. In case the packet size is greater than the maximum size of the supported interface on the receiving node, the packet gets fragmented and additional fragment headers are added to the fragment and sent to the next node. The next node would then determine whether to forward the fragmented packet or drop the same. In case the node drops the packet then a reverse message indicated the reason for drop is sent. However, there is no guaranteed mechanism that exists so as to ensure that packets are not fragmented or lost in transition.
It is therefore desirable to provide a mechanism so as to avoid or restrict packet fragmentation and packet dropping at any node in the network path between the source node and the destination node due to restriction in packet size in the network path. It is also desirable to have intelligence with respect to the underlying hardware resources during transmission of data packets over a communication network.